package com.wei.spring.web.user.configuration;

import com.wei.spring.web.user.interceptor.LogInterceptor;
import com.wei.spring.web.user.interceptor.TraceIdInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 类的详细说明
 * 如果继承某个接口{@link StateContext}，提供一个链接，方便使用
 * <p>
 * 如果是过期的接口，那么请尽量提供用于替换的类的链接地址{@link StateContext}
 *
 * @param <S> 如果用到泛型，可以这样注释
 * @param <E> 如果用到泛型，可以这样注释
 * @author buhuan.wang
 * @since 2020/12/29
 */
//@Configuration
public class WebConfiguration implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // TODO: 2018/10/29 这两个拦截的顺序可以变化吗？不可以，因为需要先获取traceId，
        // TODO: 2018/10/29  不然LogDemoInterceptor -> preHandle方法打印的日志没有traceId
        /**
         * 同一次请求traceId相同
         * */
        registry.addInterceptor(new TraceIdInterceptor()).addPathPatterns("/**");
        /**
         * 打印请求路径、请求参数已经返回的参数等等
         * */
        registry.addInterceptor(new LogInterceptor()).addPathPatterns("/**");
    }
}
